//#include <stdio.h>
//#include <unistd.h>
//#include <sys/wait.h>
//
//int main()
//{
//    int options = 0;
//    scanf("%d", &options);
//    pid_t pid = fork();
//    if(pid == 0) // 子进程
//    {
//        printf("我是子进程, 我正在运行\n");
//        sleep(5);
//    }
//    else // 父进程
//    {
//        pid_t ret = 0;
//        if(options) // 执行非阻塞等待
//        {
//            for(int i = 0; !ret; i++)
//            {
//                printf("采取非阻塞等待\n");
//                ret = waitpid(-1, NULL, WNOHANG);
//                if(ret == 0) printf("等待次数: %d, 没有成功等待到已结束的子进程\n", i);
//                else printf("等待次数: %d, 成功等待到已结束的子进程, pid: %d\n", i, ret);
//                sleep(1);
//            }
//        }
//        else // 执行阻塞等待
//        {
//            printf("采取阻塞等待\n");
//            ret = waitpid(-1, NULL, 0);
//            printf("成功等待到已结束的子进程, pid: %d\n", ret);
//        }
//    }
//
//    return 0;
//}


#include <stdio.h>
#include <unistd.h>

int main()
{
    printf("我是程序 A, pid: %d\n", getpid());
    printf("即将使用程序 B 替换该程序\n");

    execl("./B.exe", NULL);

    return 0;
}

